#include "pais.h"

Pais :: Pais(string n, int r, int x1, int y1, bool mPais, Continente &con, VecContinentes &v): 
	continente(con), vc(v)
{
	nombre = n;
	radio = r;
	x = x1;
	y = y1;
	mostrarPais = mPais;
}

string Pais :: get_Nombre(){
	return nombre;
}

int Pais :: get_Radio(){
	return radio;
}

void Pais :: get_Pos(int &x1, int &y1){
	x1 = x;
	y1 = y;
}

Continente* Pais :: get_Continente(){
	return &continente;
}

bool Pais :: get_MostrarNombre(){
	return mostrarPais;
}
		
void Pais :: set_Nombre(string n){
	nombre = n;
}
void Pais :: set_Radio(int r){
	radio = r;
}
void Pais :: set_Pos(int x1, int y1){
	x = x1;
	y = y1;
}

void Pais :: set_Continente(Continente &c){
	continente = c;
}

//metodos de las conecciones

void Pais :: agregar_Coneccion(string nPais, string nContinente){
	vec.insert ( pair<string,string>(nPais,nContinente));
}
		
//borra todas las conecciones que contengan a "n"
void Pais :: borrar_Coneccion_Compuesto(string nPais){
	if(existe_Coneccion(nPais)){
		string cont = vec[nPais];
		Continente *c = vc.get_Continente(cont);
		Pais *p = c->get_Pais(nPais);
		p->borrar_Coneccion_Simple(this->nombre);
		borrar_Coneccion_Simple(nPais);
	}
}
	
void Pais :: borrar_Coneccion_Simple(string nPais){
	
	vec.erase(nPais);
}
		
//devuelve true si la pareja existe, false en caso contrario
bool Pais :: existe_Coneccion(string nPais){
	map<string,string>::iterator it;
	it = vec.find(nPais);
	if(vec.end() == it){
		return false;
	}
	return true;
}
		
//vacia el vector
void Pais :: vaciar_Conecciones(){
	map<string,string>::iterator it;
	it = vec.begin();
	while(!vec.empty()){
		string nP = it->first;
		string nC = it->second;
		borrar_Coneccion_Compuesto(nP);
		it = vec.begin();
	}
	return;
}

int Pais :: cantidad_Conecciones(){
	return vec.size();
}

void Pais :: get_Coneccion(int i, string &p, string &c){
	map<string,string>::iterator it;
	it = vec.begin();
	for(int j = 0; j < i; j++){
		it++;
	}
	p = (*it).first;	
	c = (*it).second;
	return;
}

Pais :: ~Pais(){
	vaciar_Conecciones();
}
